[INFO] fetching crate ezcp 0.4.0...
[INFO] testing ezcp-0.4.0 against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] extracting crate ezcp 0.4.0 into /workspace/builds/worker-5-tc1/source
[INFO] started tweaking crates.io crate ezcp 0.4.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate ezcp 0.4.0
[INFO] tweaked toml for crates.io crate ezcp 0.4.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate ezcp 0.4.0 on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ezcp 0.4.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded zip v4.5.0
[INFO] [stderr]   Downloaded unit-prefix v0.5.1
[INFO] [stderr]   Downloaded indicatif v0.18.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627
[INFO] running `Command { std: "docker" "start" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling cfg-if v1.0.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling unicode-width v0.2.1
[INFO] [stderr]    Compiling zlib-rs v0.5.1
[INFO] [stderr]    Compiling bitflags v2.9.3
[INFO] [stderr]    Compiling unit-prefix v0.5.1
[INFO] [stderr]    Compiling thiserror v2.0.16
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling snap v1.1.1
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling bumpalo v3.19.0
[INFO] [stderr]    Compiling env_filter v0.1.3
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling unty v0.0.4
[INFO] [stderr]    Compiling zopfli v0.8.2
[INFO] [stderr]    Compiling env_logger v0.11.8
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]    Compiling indexmap v2.11.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling console v0.16.0
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling indicatif v0.18.0
[INFO] [stderr]    Compiling which v8.0.0
[INFO] [stderr]    Compiling tempfile v3.21.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling indicatif-log-bridge v0.2.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.16
[INFO] [stderr]    Compiling bincode v2.0.1
[INFO] [stderr]    Compiling libz-rs-sys v0.5.1
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]    Compiling zip v4.5.0
[INFO] [stderr]    Compiling ezcp v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.19s
[INFO] running `Command { std: "docker" "inspect" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling ezcp v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.19s
[INFO] running `Command { std: "docker" "inspect" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "8d31eb843f89ef5b4c6953dd95bab0fadf0d0774c035eedc0096455957229627" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.09s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/ezcp-f5620a184ec42d2a)
[INFO] [stdout] 
[INFO] [stdout] running 70 tests
[INFO] [stderr] [D] Logger initialized with level: TRACE
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpfSpyqt/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpouejDC/build/p14324055355525279488
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpjzg7MW/build
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpQPVpEE/build
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpfSpyqt/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpfSpyqt/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpfSpyqt/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpfSpyqt/build/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpQPVpEE/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpQPVpEE/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpQPVpEE/build/p14324055355525279488.cpp
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpfSpyqt/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpfSpyqt/build/p14324055355525279488"
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpCVZPBD/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpouejDC/build/p14324055355525279488.cpp
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmphdmTtM/build/p14324055355525279488.cpp" "-o" "/tmp/.tmphdmTtM/build/p14324055355525279488"
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpQPVpEE/build/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpjzg7MW/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpjzg7MW/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpjzg7MW/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpCVZPBD/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpouejDC/build/p14324055355525279488
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpjzg7MW/build/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpjzg7MW/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpjzg7MW/build/p14324055355525279488"
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpCVZPBD/build/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpCVZPBD/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpCVZPBD/build/p14324055355525279488"
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpouejDC/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpouejDC/build/p14324055355525279488"
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpQPVpEE/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpQPVpEE/build/p14324055355525279488"
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpKQ2Vzf/build
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpgJsRmK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpWP2CFP
[INFO] [stderr] [T] Source file: /tmp/.tmpKQ2Vzf/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpKQ2Vzf/build/p14324055355525279488
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmppb28pf
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpKQ2Vzf/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpeGFpJx/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpKQ2Vzf/build/p14324055355525279488
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmprQyxGg/build
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpSr8Jr8
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp4App5L
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Source file: /tmp/.tmpgJsRmK/p14324055355525279488.cpp, Executable file: /tmp/.tmpgJsRmK/p14324055355525279488
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpgJsRmK/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpgJsRmK/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmprQyxGg/build/p14324055355525279488.cpp, Executable file: /tmp/.tmprQyxGg/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmprQyxGg/build/p14324055355525279488.cpp
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpgJsRmK/p14324055355525279488.cpp" "-o" "/tmp/.tmpgJsRmK/p14324055355525279488"
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmprQyxGg/build/p14324055355525279488
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmprQyxGg/build/p14324055355525279488.cpp" "-o" "/tmp/.tmprQyxGg/build/p14324055355525279488"
[INFO] [stderr] [T] Source file: /tmp/.tmpWP2CFP/p14324055355525279488.cpp, Executable file: /tmp/.tmpWP2CFP/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpWP2CFP/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpWP2CFP/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpWP2CFP/p14324055355525279488.cpp" "-o" "/tmp/.tmpWP2CFP/p14324055355525279488"
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpKQ2Vzf/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpKQ2Vzf/build/p14324055355525279488"
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp0Y7JyJ
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Source file: /tmp/.tmp0Y7JyJ/p14324055355525279488.cpp, Executable file: /tmp/.tmp0Y7JyJ/p14324055355525279488
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpeGFpJx/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpeGFpJx/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpeGFpJx/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpeGFpJx/build/p14324055355525279488
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpeGFpJx/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpeGFpJx/build/p14324055355525279488"
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp0Y7JyJ/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp0Y7JyJ/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpSr8Jr8/p14324055355525279488.cpp, Executable file: /tmp/.tmpSr8Jr8/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmppb28pf/p14324055355525279488.cpp, Executable file: /tmp/.tmppb28pf/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpSr8Jr8/p14324055355525279488.cpp
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp0Y7JyJ/p14324055355525279488.cpp" "-o" "/tmp/.tmp0Y7JyJ/p14324055355525279488"
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmppb28pf/p14324055355525279488.cpp
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmppb28pf/p14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpxbJHxK/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmppb28pf/p14324055355525279488.cpp" "-o" "/tmp/.tmppb28pf/p14324055355525279488"
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpxbJHxK/p14324055355525279488.cpp" "-o" "/tmp/.tmpxbJHxK/p14324055355525279488"
[INFO] [stderr] [T] Source file: /tmp/.tmp4App5L/p14324055355525279488.cpp, Executable file: /tmp/.tmp4App5L/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp4App5L/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp4App5L/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp4App5L/p14324055355525279488.cpp" "-o" "/tmp/.tmp4App5L/p14324055355525279488"
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpSr8Jr8/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpSr8Jr8/p14324055355525279488.cpp" "-o" "/tmp/.tmpSr8Jr8/p14324055355525279488"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmpeGFpJx/build/p12681089750808797356.cpp, Executable file: /tmp/.tmpeGFpJx/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpeGFpJx/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpeGFpJx/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpeGFpJx/build/p12681089750808797356.cpp" "-o" "/tmp/.tmpeGFpJx/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpouejDC/build/p6857213752579981138
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpouejDC/build/p6857213752579981138.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpouejDC/build/p6857213752579981138
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpouejDC/build/p6857213752579981138.cpp" "-o" "/tmp/.tmpouejDC/build/p6857213752579981138"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmp0Y7JyJ/p12833077150707811555.cpp, Executable file: /tmp/.tmp0Y7JyJ/p12833077150707811555
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp0Y7JyJ/p12833077150707811555.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp0Y7JyJ/p12833077150707811555
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp0Y7JyJ/p12833077150707811555.cpp" "-o" "/tmp/.tmp0Y7JyJ/p12833077150707811555"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpxbJHxK/p12833077150707811555.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpxbJHxK/p12833077150707811555.cpp" "-o" "/tmp/.tmpxbJHxK/p12833077150707811555"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmphdmTtM/build/p12681089750808797356.cpp" "-o" "/tmp/.tmphdmTtM/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpCVZPBD/build/p11267333155935078430
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpCVZPBD/build/p11267333155935078430.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpCVZPBD/build/p11267333155935078430
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpCVZPBD/build/p11267333155935078430.cpp" "-o" "/tmp/.tmpCVZPBD/build/p11267333155935078430"
[INFO] [stdout] test tests::cpp_runner_tests::cpp_runner_tests::test_runner_new ... ok
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpk2kCZF
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpk2kCZF/p14324055355525279488.cpp, Executable file: /tmp/.tmpk2kCZF/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpk2kCZF/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpk2kCZF/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpk2kCZF/p14324055355525279488.cpp" "-o" "/tmp/.tmpk2kCZF/p14324055355525279488"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmpfSpyqt/build/p12681089750808797356.cpp, Executable file: /tmp/.tmpfSpyqt/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpfSpyqt/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpfSpyqt/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpfSpyqt/build/p12681089750808797356.cpp" "-o" "/tmp/.tmpfSpyqt/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              while (true) {
[INFO] [stderr]  |                  // Infinite loop to simulate TLE
[INFO] [stderr]  |              }
[INFO] [stderr]  |              return 0;
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 3369991095479187441
[INFO] [stderr] [T] Source file: /tmp/.tmppb28pf/p3369991095479187441.cpp, Executable file: /tmp/.tmppb28pf/p3369991095479187441
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmppb28pf/p3369991095479187441.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmppb28pf/p3369991095479187441
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmppb28pf/p3369991095479187441.cpp" "-o" "/tmp/.tmppb28pf/p3369991095479187441"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmpjzg7MW/build/p12681089750808797356.cpp, Executable file: /tmp/.tmpjzg7MW/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpjzg7MW/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpjzg7MW/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpjzg7MW/build/p12681089750808797356.cpp" "-o" "/tmp/.tmpjzg7MW/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpSr8Jr8/p12833077150707811555.cpp, Executable file: /tmp/.tmpSr8Jr8/p12833077150707811555
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpSr8Jr8/p12833077150707811555.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpSr8Jr8/p12833077150707811555
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpSr8Jr8/p12833077150707811555.cpp" "-o" "/tmp/.tmpSr8Jr8/p12833077150707811555"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmppb28pf
[INFO] [stderr] [T] Running command: "/tmp/.tmppb28pf/p14324055355525279488" "/tmp/.tmppb28pf/p3369991095479187441" "1000"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmprQyxGg/build/p12681089750808797356.cpp, Executable file: /tmp/.tmprQyxGg/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmprQyxGg/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmprQyxGg/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmprQyxGg/build/p12681089750808797356.cpp" "-o" "/tmp/.tmprQyxGg/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmpKQ2Vzf/build/p12681089750808797356.cpp, Executable file: /tmp/.tmpKQ2Vzf/build/p12681089750808797356
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpKQ2Vzf/build/p12681089750808797356.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpKQ2Vzf/build/p12681089750808797356
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpKQ2Vzf/build/p12681089750808797356.cpp" "-o" "/tmp/.tmpKQ2Vzf/build/p12681089750808797356"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int*n=nullptr;
[INFO] [stderr]  |              while(true){
[INFO] [stderr]  |                  *n=1;
[INFO] [stderr]  |                  n++;
[INFO] [stderr]  |              }
[INFO] [stderr]  |              return 0;
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 6845191756198366168
[INFO] [stderr] [T] Source file: /tmp/.tmp4App5L/p6845191756198366168.cpp, Executable file: /tmp/.tmp4App5L/p6845191756198366168
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp4App5L/p6845191756198366168.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp4App5L/p6845191756198366168
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp4App5L/p6845191756198366168.cpp" "-o" "/tmp/.tmp4App5L/p6845191756198366168"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430
[INFO] [stderr] [T] Source file: /tmp/.tmpQPVpEE/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpQPVpEE/build/p11267333155935078430
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpQPVpEE/build/p11267333155935078430.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpQPVpEE/build/p11267333155935078430
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpQPVpEE/build/p11267333155935078430.cpp" "-o" "/tmp/.tmpQPVpEE/build/p11267333155935078430"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmp4App5L
[INFO] [stderr] [T] Running command: "/tmp/.tmp4App5L/p14324055355525279488" "/tmp/.tmp4App5L/p6845191756198366168" "1000"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              compile error here
[INFO] [stderr]  |              cout << "Hello, World!" << endl;
[INFO] [stderr]  |              return 1;
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 18162641665155307359
[INFO] [stderr] [T] Source file: /tmp/.tmpgJsRmK/p18162641665155307359.cpp, Executable file: /tmp/.tmpgJsRmK/p18162641665155307359
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpgJsRmK/p18162641665155307359.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpgJsRmK/p18162641665155307359
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpgJsRmK/p18162641665155307359.cpp" "-o" "/tmp/.tmpgJsRmK/p18162641665155307359"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 14 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 17 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 19 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 18 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 22 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 16 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 23 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 21 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 24 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 3 ms
[INFO] [stderr] [T] Task 25 finished with result: Ok(3, "1\n")
[INFO] [stderr] [T] Task 27 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 33 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 37 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 29 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 28 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 36 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 38 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 32 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 39 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 34 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 31 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 41 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 43 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 30 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 42 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 44 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 46 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 48 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 49 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 50 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 47 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 45 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 40 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [T] Getting result for task id: 16
[INFO] [stderr] [T] Getting result for task id: 17
[INFO] [stderr] [T] Getting result for task id: 18
[INFO] [stderr] [T] Getting result for task id: 19
[INFO] [stderr] [T] Getting result for task id: 20
[INFO] [stderr] [T] Getting result for task id: 21
[INFO] [stderr] [T] Getting result for task id: 22
[INFO] [stderr] [T] Getting result for task id: 23
[INFO] [stderr] [T] Getting result for task id: 24
[INFO] [stderr] [T] Getting result for task id: 25
[INFO] [stderr] [T] Getting result for task id: 26
[INFO] [stderr] [T] Getting result for task id: 27
[INFO] [stderr] [T] Getting result for task id: 28
[INFO] [stderr] [T] Getting result for task id: 29
[INFO] [stderr] [T] Getting result for task id: 30
[INFO] [stderr] [T] Getting result for task id: 31
[INFO] [stderr] [T] Getting result for task id: 32
[INFO] [stderr] [T] Getting result for task id: 33
[INFO] [stderr] [T] Getting result for task id: 34
[INFO] [stderr] [T] Getting result for task id: 35
[INFO] [stderr] [T] Getting result for task id: 36
[INFO] [stderr] [T] Getting result for task id: 37
[INFO] [stderr] [T] Getting result for task id: 38
[INFO] [stderr] [T] Getting result for task id: 39
[INFO] [stderr] [T] Getting result for task id: 40
[INFO] [stderr] [T] Getting result for task id: 41
[INFO] [stderr] [T] Getting result for task id: 42
[INFO] [stderr] [T] Getting result for task id: 43
[INFO] [stderr] [T] Getting result for task id: 44
[INFO] [stderr] [T] Getting result for task id: 45
[INFO] [stderr] [T] Getting result for task id: 46
[INFO] [stderr] [T] Getting result for task id: 47
[INFO] [stderr] [T] Getting result for task id: 48
[INFO] [stderr] [T] Getting result for task id: 49
[INFO] [stderr] [T] Getting result for task id: 50
[INFO] [stderr] [*] Solution time: 3ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 14 finished with result: Ok(1, "5\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "8\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(1, "200\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "10\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 12 finished with result: Ok(1, "3\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 7 finished with result: Ok(1, "6\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stdout] test tests::cpp_runner_tests::cpp_runner_tests::test_runner_add_program ... ok
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpzhlNy2
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpzhlNy2/p14324055355525279488.cpp, Executable file: /tmp/.tmpzhlNy2/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpzhlNy2/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpzhlNy2/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpzhlNy2/p14324055355525279488.cpp" "-o" "/tmp/.tmpzhlNy2/p14324055355525279488"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 7.78s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 13 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 15 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 1 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 3 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [*] Tests size: 0.01MB
[INFO] [stderr] [*] Elapsed time: 7.92s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpCVZPBD/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpCVZPBD/build/p11267333155935078430
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 17 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 18 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 14 finished with result: Ok(1, "5\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "3\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 19 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 20 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 21 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 22 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 24 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 25 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 28 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 16 finished with result: Ok(3, "1\n")
[INFO] [stderr] [T] Task 23 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 3 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 33 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 30 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 41 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 42 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 37 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 0 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 29 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 31 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 32 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 34 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 36 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 40 finished with result: Ok(0, "1\n")
[INFO] [stderr] [T] Task 43 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 44 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 27 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "8\n")
[INFO] [stderr] [T] Task 9 finished with result: Ok(1, "10\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "200\n")
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 39 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Task 38 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [T] Getting result for task id: 16
[INFO] [stderr] [T] Getting result for task id: 17
[INFO] [stderr] [T] Getting result for task id: 18
[INFO] [stderr] [T] Getting result for task id: 19
[INFO] [stderr] [T] Getting result for task id: 20
[INFO] [stderr] [T] Getting result for task id: 21
[INFO] [stderr] [T] Getting result for task id: 22
[INFO] [stderr] [T] Getting result for task id: 23
[INFO] [stderr] [T] Getting result for task id: 24
[INFO] [stderr] [T] Getting result for task id: 25
[INFO] [stderr] [T] Getting result for task id: 26
[INFO] [stderr] [T] Getting result for task id: 27
[INFO] [stderr] [T] Getting result for task id: 28
[INFO] [stderr] [T] Getting result for task id: 29
[INFO] [stderr] [T] Getting result for task id: 30
[INFO] [stderr] [T] Getting result for task id: 31
[INFO] [stderr] [T] Getting result for task id: 32
[INFO] [stderr] [T] Getting result for task id: 33
[INFO] [stderr] [T] Getting result for task id: 34
[INFO] [stderr] [T] Getting result for task id: 35
[INFO] [stderr] [T] Getting result for task id: 36
[INFO] [stderr] [T] Getting result for task id: 37
[INFO] [stderr] [T] Getting result for task id: 38
[INFO] [stderr] [T] Getting result for task id: 39
[INFO] [stderr] [T] Getting result for task id: 40
[INFO] [stderr] [T] Getting result for task id: 41
[INFO] [stderr] [T] Getting result for task id: 42
[INFO] [stderr] [T] Getting result for task id: 43
[INFO] [stderr] [T] Getting result for task id: 44
[INFO] [stderr] [*] Solution time: 3ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Solution timed out with signal 175
[INFO] [stderr] [T] Task 0 finished with result: TimedOut
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stdout] test tests::cpp_runner_tests::cpp_runner_tests::test_runner_program_tle ... ok
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpneswKv/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpneswKv/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpneswKv/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpneswKv/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpneswKv/build/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpneswKv/build/p14324055355525279488.cpp" "-o" "/tmp/.tmpneswKv/build/p14324055355525279488"
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 0.52s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 17 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 18 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 16 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 19 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 32 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 22 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Task 28 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 23 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 24 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 31 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 30 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 33 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 27 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 25 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Task 2 finished with result: Ok(1, "6\n")
[INFO] [stderr] [T] Task 29 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 41 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Task 34 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Task 39 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 40 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Task 8 finished with result: Ok(1, "8\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 42 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 45 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "3\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 43 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 47 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "200\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 48 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 38 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Solution timed out with signal 175
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Task 36 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 37 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 0 finished with result: TimedOut
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 44 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 26 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 21 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "10\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 50 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 49 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "5\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [*] Tests size: 0.01MB
[INFO] [stderr] [*] Elapsed time: 8.68s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpouejDC/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpouejDC/build/p6857213752579981138
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 46 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [T] Getting result for task id: 16
[INFO] [stderr] [T] Getting result for task id: 17
[INFO] [stderr] [T] Getting result for task id: 18
[INFO] [stderr] [T] Getting result for task id: 19
[INFO] [stderr] [T] Getting result for task id: 20
[INFO] [stderr] [T] Getting result for task id: 21
[INFO] [stderr] [T] Getting result for task id: 22
[INFO] [stderr] [T] Getting result for task id: 23
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Getting result for task id: 24
[INFO] [stderr] [T] Getting result for task id: 25
[INFO] [stderr] [T] Getting result for task id: 26
[INFO] [stderr] [T] Getting result for task id: 27
[INFO] [stderr] [T] Getting result for task id: 28
[INFO] [stderr] [T] Getting result for task id: 29
[INFO] [stderr] [T] Getting result for task id: 30
[INFO] [stderr] [T] Getting result for task id: 31
[INFO] [stderr] [T] Getting result for task id: 32
[INFO] [stderr] [T] Getting result for task id: 33
[INFO] [stderr] [T] Getting result for task id: 34
[INFO] [stderr] [T] Getting result for task id: 35
[INFO] [stderr] [T] Getting result for task id: 36
[INFO] [stderr] [T] Getting result for task id: 37
[INFO] [stderr] [T] Getting result for task id: 38
[INFO] [stderr] [T] Getting result for task id: 39
[INFO] [stderr] [T] Getting result for task id: 40
[INFO] [stderr] [T] Getting result for task id: 41
[INFO] [stderr] [T] Getting result for task id: 42
[INFO] [stderr] [T] Getting result for task id: 43
[INFO] [stderr] [T] Getting result for task id: 44
[INFO] [stderr] [T] Getting result for task id: 45
[INFO] [stderr] [T] Getting result for task id: 46
[INFO] [stderr] [T] Getting result for task id: 47
[INFO] [stderr] [T] Getting result for task id: 48
[INFO] [stderr] [T] Getting result for task id: 49
[INFO] [stderr] [T] Getting result for task id: 50
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stdout] test tests::cpp_runner_tests::cpp_runner_tests::test_runner_program_crash ... FAILED
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmp120ziF/build
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmp120ziF/build/p14324055355525279488.cpp, Executable file: /tmp/.tmp120ziF/build/p14324055355525279488
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmp120ziF/build/p14324055355525279488.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmp120ziF/build/p14324055355525279488
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmp120ziF/build/p14324055355525279488.cpp" "-o" "/tmp/.tmp120ziF/build/p14324055355525279488"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Task 16 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 0.58s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 18 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(1, "4\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(1, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 19 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 22 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 23 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 25 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 0 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(0, "8\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "10\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(1, "200\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 0 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 27 finished with result: Ok(0, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 17 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 24 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 28 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "5\n")
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 21 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(1, "3\n")
[INFO] [stderr] [T] Task 29 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 30 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 31 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 33 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 36 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 37 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 32 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 39 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 42 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 38 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 40 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 41 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 44 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 34 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 43 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [T] Getting result for task id: 16
[INFO] [stderr] [T] Getting result for task id: 17
[INFO] [stderr] [T] Getting result for task id: 18
[INFO] [stderr] [T] Getting result for task id: 19
[INFO] [stderr] [T] Getting result for task id: 20
[INFO] [stderr] [T] Getting result for task id: 21
[INFO] [stderr] [T] Getting result for task id: 22
[INFO] [stderr] [T] Getting result for task id: 23
[INFO] [stderr] [T] Getting result for task id: 24
[INFO] [stderr] [T] Getting result for task id: 25
[INFO] [stderr] [T] Getting result for task id: 26
[INFO] [stderr] [T] Getting result for task id: 27
[INFO] [stderr] [T] Getting result for task id: 28
[INFO] [stderr] [T] Getting result for task id: 29
[INFO] [stderr] [T] Getting result for task id: 30
[INFO] [stderr] [T] Getting result for task id: 31
[INFO] [stderr] [T] Getting result for task id: 32
[INFO] [stderr] [T] Getting result for task id: 33
[INFO] [stderr] [T] Getting result for task id: 34
[INFO] [stderr] [T] Getting result for task id: 35
[INFO] [stderr] [T] Getting result for task id: 36
[INFO] [stderr] [T] Getting result for task id: 37
[INFO] [stderr] [T] Getting result for task id: 38
[INFO] [stderr] [T] Getting result for task id: 39
[INFO] [stderr] [T] Getting result for task id: 40
[INFO] [stderr] [T] Getting result for task id: 41
[INFO] [stderr] [T] Getting result for task id: 42
[INFO] [stderr] [T] Getting result for task id: 43
[INFO] [stderr] [T] Getting result for task id: 44
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [*] Tests size: 0.01MB
[INFO] [stderr] [*] Elapsed time: 1.20s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpCVZPBD/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 11267333155935078430
[INFO] [stderr] [T] Source file: /tmp/.tmpCVZPBD/build/p11267333155935078430.cpp, Executable file: /tmp/.tmpCVZPBD/build/p11267333155935078430
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 0.29s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 3 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 0 finished with result: Ok(3, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "200\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "8\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "10\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 11 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(1, "4\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "5\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Task 12 finished with result: Ok(1, "3\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpCVZPBD/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 0.22s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p14324055355525279488.cpp, Executable file: /tmp/.tmphdmTtM/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int a,b;
[INFO] [stderr]  |              cin>>a>>b;
[INFO] [stderr]  |              cout<<a+b<<"\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr]  |          
[INFO] [stderr]  |          
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12681089750808797356
[INFO] [stderr] [T] Source file: /tmp/.tmphdmTtM/build/p12681089750808797356.cpp, Executable file: /tmp/.tmphdmTtM/build/p12681089750808797356
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 16 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 18 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 2 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 25 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 0 ms
[INFO] [stderr] [T] Task 23 finished with result: Ok(0, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpSr8Jr8
[INFO] [stderr] [T] Task 26 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpSr8Jr8/p14324055355525279488" "/tmp/.tmpSr8Jr8/p12833077150707811555" "1000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 27 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |              #include <iostream>
[INFO] [stderr]  |              using namespace std;
[INFO] [stderr]  |              int main() {
[INFO] [stderr]  |                  int n;
[INFO] [stderr]  |                  cin>>n;
[INFO] [stderr]  |                  cout << 0 << " " << n << endl;
[INFO] [stderr]  |                  return 0;
[INFO] [stderr]  |              }
[INFO] [stderr]  |              
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 665691812841231303
[INFO] [stderr] [T] Source file: /tmp/.tmpk2kCZF/p665691812841231303.cpp, Executable file: /tmp/.tmpk2kCZF/p665691812841231303
[INFO] [stderr] [T] Source file does not exist, writing to: /tmp/.tmpk2kCZF/p665691812841231303.cpp
[INFO] [stderr] [T] Executable file does not exist. Compiling: /tmp/.tmpk2kCZF/p665691812841231303
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmphdmTtM/build/p14324055355525279488" "/tmp/.tmphdmTtM/build/p12681089750808797356" "5000"
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "-std=c++17" "-O2" "/tmp/.tmpk2kCZF/p665691812841231303.cpp" "-o" "/tmp/.tmpk2kCZF/p665691812841231303"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 8 finished with result: Ok(2, "8\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(1, "3\n")
[INFO] [stderr] [T] Task 14 finished with result: Ok(1, "5\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "10\n")
[INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 22 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 17 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 19 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 3 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 21 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 32 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Task 28 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 29 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stdout] test tests::cpp_runner_tests::cpp_runner_tests::test_runner_run_program ... ok
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 35 finished with result: Ok(2, "1\n")
[INFO] [stderr] [*] Tests size: 0.01MB
[INFO] [stderr] [*] Elapsed time: 0.89s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Task 33 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p14324055355525279488.cpp, Executable file: /tmp/.tmpouejDC/build/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |          #include <iostream>
[INFO] [stderr]  |          using namespace std;
[INFO] [stderr]  |          
[INFO] [stderr]  |          int main() {
[INFO] [stderr]  |              int n;
[INFO] [stderr]  |              cin>>n;
[INFO] [stderr]  |              int a[n];
[INFO] [stderr]  |              for(int i=0;i<n;i++) {
[INFO] [stderr]  |                  cin>>a[i];
[INFO] [stderr]  |              }
[INFO] [stderr]  |              cout<<"1\n";
[INFO] [stderr]  |              return 0; 
[INFO] [stderr]  |          }
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 6857213752579981138
[INFO] [stderr] [T] Source file: /tmp/.tmpouejDC/build/p6857213752579981138.cpp, Executable file: /tmp/.tmpouejDC/build/p6857213752579981138
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 37 finished with result: Ok(1, "1\n")
[INFO] [stderr] [D] Running command: cd "/usr/bin" && "/usr/bin/g++" "/tmp/.tmpWc30eR/test.cpp" "-o" "/tmp/.tmpWc30eR/test"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 30 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpouejDC/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 39 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 38 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 40 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 36 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 42 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 2 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 3 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 5 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 8 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 5
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpfSpyqt/build
[INFO] [stderr] [T] Running command: "/tmp/.tmpfSpyqt/build/p14324055355525279488" "/tmp/.tmpfSpyqt/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Task 10 finished with result: Ok(2, "200\n")
[INFO] [stderr] [T] Task 11 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Task 15 finished with result: Ok(2, "101\n")
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Task 1 finished with result: Ok(1, "4\n")
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "4\n")
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "2\n")
[INFO] [stderr] [T] Task 7 finished with result: Ok(2, "6\n")
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 13 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 0 finished with result: Ok(2, "Hello, World!\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Getting result for task id: 1
[INFO] [stderr] [T] Getting result for task id: 2
[INFO] [stderr] [T] Getting result for task id: 3
[INFO] [stderr] [T] Getting result for task id: 4
[INFO] [stderr] [T] Getting result for task id: 5
[INFO] [stderr] [T] Getting result for task id: 6
[INFO] [stderr] [T] Getting result for task id: 7
[INFO] [stderr] [T] Getting result for task id: 8
[INFO] [stderr] [T] Getting result for task id: 9
[INFO] [stderr] [T] Getting result for task id: 10
[INFO] [stderr] [T] Getting result for task id: 11
[INFO] [stderr] [T] Getting result for task id: 12
[INFO] [stderr] [T] Getting result for task id: 13
[INFO] [stderr] [T] Getting result for task id: 14
[INFO] [stderr] [T] Getting result for task id: 15
[INFO] [stderr] [*] Solution time: 2ms
[INFO] [stderr] [T] Clearing tasks
[INFO] [stderr] [T] Running command: "/tmp/.tmpfSpyqt/build/p14324055355525279488" "/tmp/.tmpfSpyqt/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Getting result for task id: 0
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[INFO] [stderr]  |      long long user_ms = 1LL * user.tv_sec * 1000 + 1LL * user.tv_usec / 1000;
[INFO] [stderr]  |      long long sys_ms = 1LL * sys.tv_sec * 1000 + 1LL * sys.tv_usec / 1000;
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int run_command_with_timeout(const string& command, int timeout_ms) {
[INFO] [stderr]  |      pid_t pid = fork();
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid < 0) {
[INFO] [stderr]  |          // fork failed
[INFO] [stderr]  |          return -1;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      if (pid == 0) {
[INFO] [stderr]  |          exit(execl(command.c_str(), (char*) nullptr));
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      int status;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          pid_t result = waitpid(pid, &status, WNOHANG);
[INFO] [stderr]  |          if (result == pid) {
[INFO] [stderr]  |              if (WIFEXITED(status)) {
[INFO] [stderr]  |                  int exit_code = WEXITSTATUS(status);
[INFO] [stderr]  |                  return exit_code;
[INFO] [stderr]  |              } else if (WIFSIGNALED(status)) {
[INFO] [stderr]  |                  int signal = WTERMSIG(status);
[INFO] [stderr]  |                  return signal;
[INFO] [stderr]  |              }
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          this_thread::sleep_for(chrono::milliseconds(wait_time_ms));
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      kill(pid, SIGKILL);
[INFO] [stderr]  |      waitpid(pid, &status, 0);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int time_limit_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long start = get_rusage();
[INFO] [stderr]  |      int exit_status = run_command_with_timeout(command, time_limit_ms * 2);
[INFO] [stderr]  |      long long end = get_rusage();
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long elapsed = end - start;
[INFO] [stderr]  |  
[INFO] [stderr]  |      if(elapsed >= time_limit_ms)
[INFO] [stderr]  |          return 175;
[INFO] [stderr]  |  
[INFO] [stderr]  |      cerr << end - start;
[INFO] [stderr]  |      return exit_status;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #endif
[INFO] [stderr] [T] Program handle created with id: 0 and hash: 14324055355525279488
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p14324055355525279488.cpp, Executable file: /tmp/.tmpxbJHxK/p14324055355525279488
[INFO] [stderr] [T] Adding program with source code: 
[INFO] [stderr]  |      #include <iostream>
[INFO] [stderr]  |      using namespace std;
[INFO] [stderr]  |      int main() {
[INFO] [stderr]  |          cout << "Hello, World!" << endl;
[INFO] [stderr]  |          return 0;
[INFO] [stderr]  |      }
[INFO] [stderr]  |      
[INFO] [stderr] [T] Program handle created with id: 1 and hash: 12833077150707811555
[INFO] [stderr] [T] Source file: /tmp/.tmpxbJHxK/p12833077150707811555.cpp, Executable file: /tmp/.tmpxbJHxK/p12833077150707811555
[INFO] [stderr] [T] Adding task for program id: 1, time limit: 1
[INFO] [stderr] [T] Cleaning build folder: /tmp/.tmpxbJHxK
[INFO] [stderr] [T] Running command: "/tmp/.tmpxbJHxK/p14324055355525279488" "/tmp/.tmpxbJHxK/p12833077150707811555" "1000"
[INFO] [stderr] [T] Task 48 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 15 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Task 11 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 1 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 4 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 5 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 9 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 12 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 24 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 31 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 34 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 41 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 43 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Task 44 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 45 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 46 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Task 47 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpCVZPBD/build/p14324055355525279488" "/tmp/.tmpCVZPBD/build/p11267333155935078430" "5000"
[INFO] [stderr] [T] Task 25 finished with result: Ok(1, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 6 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 29 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Elapsed time from timer: 1 ms
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Task 0 finished with result: Ok(1, "2\n")
[INFO] [stderr] [T] Task 20 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpfSpyqt/build/p14324055355525279488" "/tmp/.tmpfSpyqt/build/p12681089750808797356" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 16 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 32 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [T] Elapsed time from timer: 2 ms
[INFO] [stderr] [T] Task 14 finished with result: Ok(2, "1\n")
[INFO] [stderr] [T] Running command: "/tmp/.tmpouejDC/build/p14324055355525279488" "/tmp/.tmpouejDC/build/p6857213752579981138" "5000"
[INFO] [stderr] [*] Tests size: 0.00MB
[INFO] [stderr] [*] Elapsed time: 0.50s
[INFO] [stderr] [T] Creating CppRunner with build folder: /tmp/.tmphdmTtM/build
[INFO] [stderr] [T] Building timer program
[INFO] [stderr] [T] Adding program with source code: #ifdef _WIN32
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <windows.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <string>
[INFO] [stderr]  |  
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage(HANDLE process) {
[INFO] [stderr]  |      FILETIME creationTime, exitTime, kernelTime, userTime;
[INFO] [stderr]  |      GetProcessTimes(process, &creationTime, &exitTime, &kernelTime, &userTime);
[INFO] [stderr]  |  
[INFO] [stderr]  |      ULARGE_INTEGER userTimeInt, sysTimeInt;
[INFO] [stderr]  |      userTimeInt.LowPart = userTime.dwLowDateTime;
[INFO] [stderr]  |      userTimeInt.HighPart = userTime.dwHighDateTime;
[INFO] [stderr]  |      sysTimeInt.LowPart = kernelTime.dwLowDateTime;
[INFO] [stderr]  |      sysTimeInt.HighPart = kernelTime.dwHighDateTime;
[INFO] [stderr]  |  
[INFO] [stderr]  |      long long user_ms = userTimeInt.QuadPart / 10000;  // Convert to milliseconds
[INFO] [stderr]  |      long long sys_ms = sysTimeInt.QuadPart / 10000;    // Convert to milliseconds
[INFO] [stderr]  |  
[INFO] [stderr]  |      return user_ms + sys_ms;
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  int main(int argc, const char* argv[]) {
[INFO] [stderr]  |      string command = argv[1];
[INFO] [stderr]  |      int timeout_ms = stoi(argv[2]);
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use STARTUPINFOW for wide characters
[INFO] [stderr]  |      STARTUPINFOW si = { sizeof(si) };
[INFO] [stderr]  |      PROCESS_INFORMATION pi;
[INFO] [stderr]  |      ZeroMemory(&pi, sizeof(pi));
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Convert command to wide string for Windows (needed for CreateProcessW)
[INFO] [stderr]  |      wstring wcommand(command.begin(), command.end());
[INFO] [stderr]  |  
[INFO] [stderr]  |      // Use CreateProcessW (wide character version)
[INFO] [stderr]  |      if (!CreateProcessW(
[INFO] [stderr]  |              NULL, &wcommand[0], NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) {
[INFO] [stderr]  |          return -1;  // Error in creating process
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      DWORD waitResult;
[INFO] [stderr]  |      int elapsed = 0;
[INFO] [stderr]  |      int wait_time_ms = 10; // check every 10ms
[INFO] [stderr]  |  
[INFO] [stderr]  |      while (elapsed < timeout_ms) {
[INFO] [stderr]  |          waitResult = WaitForSingleObject(pi.hProcess, wait_time_ms);
[INFO] [stderr]  |          if (waitResult == WAIT_OBJECT_0) {
[INFO] [stderr]  |              long long elapsed_time = get_rusage(pi.hProcess);
[INFO] [stderr]  |              cerr << elapsed_time << endl; // Output the elapsed time
[INFO] [stderr]  |  
[INFO] [stderr]  |              DWORD exitCode;
[INFO] [stderr]  |              GetExitCodeProcess(pi.hProcess, &exitCode);
[INFO] [stderr]  |              CloseHandle(pi.hProcess);
[INFO] [stderr]  |              CloseHandle(pi.hThread);
[INFO] [stderr]  |              return exitCode;
[INFO] [stderr]  |          }
[INFO] [stderr]  |  
[INFO] [stderr]  |          Sleep(wait_time_ms);
[INFO] [stderr]  |          elapsed += wait_time_ms;
[INFO] [stderr]  |      }
[INFO] [stderr]  |  
[INFO] [stderr]  |      TerminateProcess(pi.hProcess, 1); // Kill the process
[INFO] [stderr]  |      WaitForSingleObject(pi.hProcess, INFINITE);  // Wait for it to terminate
[INFO] [stderr]  |  
[INFO] [stderr]  |      CloseHandle(pi.hProcess);
[INFO] [stderr]  |      CloseHandle(pi.hThread);
[INFO] [stderr]  |  
[INFO] [stderr]  |      return 175; // Timeout occurred
[INFO] [stderr]  |  }
[INFO] [stderr]  |  
[INFO] [stderr]  |  #else
[INFO] [stderr]  |  #include <iostream>
[INFO] [stderr]  |  #include <chrono>
[INFO] [stderr]  |  #include <unistd.h>
[INFO] [stderr]  |  #include <sys/wait.h>
[INFO] [stderr]  |  #include <signal.h>
[INFO] [stderr]  |  #include <thread>
[INFO] [stderr]  |  #include <sys/resource.h>
[INFO] [stderr]  |  using namespace std;
[INFO] [stderr]  |  
[INFO] [stderr]  |  
[INFO] [stderr]  |  long long get_rusage() {
[INFO] [stderr]  |      rusage res;
[INFO] [stderr]  |      getrusage(RUSAGE_CHILDREN, &res);
[INFO] [stderr]  |      timeval user = res.ru_utime;
[INFO] [stderr]  |      timeval sys = res.ru_stime;
[WARN] too many lines in the log, truncating it
